package com.example.mybatis_plus_use.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * OpenAPI规范：提供API描述标准
 * Springdoc：Spring框架的OpenAPI实现
 * Knife4j：提供UI增强和额外功能
 * 所以说，Knife4j = OpenAPI规范 + Swagger功能 + 增强功能 + 美化界面，让我们能更方便地管理和测试API。
 * <p>
 * A[Controller注解] --> B[OpenAPI规范]
 * B --> C[Knife4j增强]
 * C --> D[美化的API文档界面]
 */
@Configuration
public class Knife4jConfig {

    /**
     * 自定义 OpenAPI 配置
     * 配置API文档的基本信息
     *
     * @return OpenAPI配置实例
     */
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        // 设置API文档标题
                        .title("Project Learning API")
                        // 设置API文档描述
                        .description("Spring Boot zjh API 文档")
                        // 设置API版本号
                        .version("v1.0.0")
                        // 设置联系人信息
                        .contact(new Contact()
                                .name("zjh")
                                .email("zjhhh123456@2925.com")));
    }
}
//    A[Controller注解] --> B[OpenAPI规范]（spring自带的）
//    B --> C[Knife4j增强]
//    C --> D[美化的API文档界面]
